{
 "nbformat": 4,
 "nbformat_minor": 2,
 "metadata": {
  "language_info": {
   "name": "python",
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   }
  },
  "orig_nbformat": 2,
  "file_extension": ".py",
  "mimetype": "text/x-python",
  "name": "python",
  "npconvert_exporter": "python",
  "pygments_lexer": "ipython3",
  "version": 3
 },
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "给定一个二叉搜索树的根节点 root 和一个值 key，删除二叉搜索树中的 key 对应的节点，并保证二叉搜索树的性质不变。返回二叉搜索树（有可能被更新）的根节点的引用。\n",
    "\n",
    "一般来说，删除节点可分为两个步骤：\n",
    "\n",
    "首先找到需要删除的节点；\n",
    "如果找到了，删除它。\n",
    "说明： 要求算法时间复杂度为 O(h)，h 为树的高度。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可能的情况：\n",
    "\n",
    "- 如果没有，返回root\n",
    "\n",
    "- 如果有　\n",
    "\n",
    "    １. 节点下面有两个节点，节点等于right. \n",
    "\n",
    "    ２. 有一个节点，下面的节点挪上来\n",
    "\n",
    "    3. 没有节点，删掉他\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "删除不能在子节点操作，只能在父节点操作"
   ]
  }
 ]
}